package chapter6

import (
	"fmt"
	"reflect"
)

/*
类型T方法集包含了所有receiverT方法
类型*T方法集包含了所有receiver T +*T方法
匿名嵌入S，T方法集中包含所有recieve S方法
匿名嵌入*S T方法集中包含所有recieveS+*S方法
匿名嵌入S或*S，*T方法集包含了所有的recieve S+*S方法
 */
type S struct {
}
type T struct {
	S
}
func (S)sVal(){}
func (*S)sPtr(){}
func (T)tVal(){}
func (*T)tPtr(){}
func methodSet(a interface{})  {
	t:=reflect.TypeOf(a)
	i,n :=0,t.NumMethod()
	fmt.Println(i,n)
	for ;i<n;i++{
		m:=t.Method(i)
		fmt.Println(m.Name,m.Type)
	}
}
func Test3(){
	var t T
	methodSet(t)
}

